CC=g++
ifdef PROFILE
	NEWFLAGS=-p -pg
else
	NEWFLAGS=
endif
ifdef NOGTK
	NEWFLAGSGTK=
else
	NEWFLAGSGTK=-D WITHGTK
endif
ifdef RELEASE
	CFLAGS=-O3 -s $(NEWFLAGS)
else
	CFLAGS=-O0 -ggdb3 -Werror -Wall $(NEWFLAGS)
endif
LFLAGS=
ACFLAGS=`pkg-config --cflags gtkmm-2.4`
ALFLAGS=`pkg-config --libs --cflags gtkmm-2.4`
CCFLAGS=
CLFLAGS=-lgd -lz -lpng
BIN=.

all:$(BIN)/itineris

$(BIN)/itineris:itineris.cpp $(BIN)/erreurs.o $(BIN)/ast.o $(BIN)/geometrie.o $(BIN)/graphe.o $(BIN)/gisobjects.o $(BIN)/antcolony.o $(BIN)/attributs.o $(BIN)/window.o $(BIN)/routes.o $(BIN)/raster.o $(BIN)/parser.o $(BIN)/application.o $(BIN)/console.o
	@echo --------------- Construction de l\'exécutable ---------------
	@$(CC) $(CFLAGS) -o $(BIN)/itineris $^ $(LFLAGS) $(ALFLAGS) $(CLFLAGS)

$(BIN)/application.o:kdtree.h erreurs.h raster.h geometrie.h graphe.h gisobjects.h routes.h

$(BIN)/gisobjects.o:graphe.h attributs.h

$(BIN)/graphe.o:heap.h heap.cpp

$(BIN)/attributs.o:erreurs.h

$(BIN)/ast.o:parser.h

$(BIN)/routes.o:graphe.h erreurs.h geometrie.h gisobjects.h kdtree.h parser.h ast.h routes.h

$(BIN)/console.o:console.cpp erreurs.h parser.h ast.h raster.h geometrie.h graphe.h gisobjects.h routes.h application.h window.h
	@echo --------------- Compilation de $< ---------------
	@$(CC) $(CFLAGS) -c -o $@ $< $(ACFLAGS) $(NEWFLAGSGTK)

$(BIN)/window.o:window.cpp window.h routes.h erreurs.h graphe.h geometrie.h gisobjects.h raster.h
	@echo --------------- Compilation de $< ---------------
	@$(CC) $(CFLAGS) -c -o $@ $< $(ACFLAGS)

$(BIN)/%.o:%.cpp %.h
	@echo --------------- Compilation de $< ---------------
	@$(CC) $(CFLAGS) -c -o $@ $<

doc:
	@echo --------------- Génération de la documentation ---------------
	@if test ! -x doc/; then mkdir doc; fi
	@doxygen doxyconf

clean:
	rm -rf *.o

cleandoc:
	rm -rf doc

cleanall: clean cleandoc
	rm -rf itineris

archive:
	@tar -cjf itineris.tar.bz2 *.cpp *.h doxyconf commands_*

